1. Field of the Invention
The present invention generally relates to microprocessors and, more particularly, to methods and systems that help accelerate a microprocessor's execution of functions by optimally selecting an available assist unit.
2. Relevant Background
Integrated circuits such as microprocessors contain multiple processing cores having multiple hardware threads that receive processing requests (also referred to as software tasks) to execute various functions for a computer. As microprocessor technology advances, more and more components and features are incorporated into the design of microprocessors to execute functions at faster rates. A recent design trend for microprocessors is to incorporate specialized co-processors, also referred to as accelerators or assist units, which execute functions in targeted applications at faster rates. The use of such assist units is typically encapsulated into a collection of functions (also referred to as a library of functions) within the microprocessor. The library of functions may be executed on older systems with conventional software and on newer systems with specialized software that leverages the available assists units.
In modern designs, a microprocessor may include one or more assist units assigned to one or more processing cores having multiple hardware threads. For example, a processing core may have an assigned assist unit capable of executing a specific function—such as a memory copy function. While the processing core is capable of executing the memory copy function using one or more of the processing core's hardware threads, the assist unit is able to execute the memory copy function at a faster rate. Thus, in an effort to accelerate execution of the memory copy function, when the processing core receives a processing request for the memory copy function—the processing core will request that the assigned assist unit execute the copy function. Not only does this allow the assist unit to accelerate completion of the processing request (execution of the function), but it also allows the processing core to execute another memory copy function or perform other tasks with the hardware thread that would otherwise be executing the original memory copy function. If additional processing requests are made to the assigned assist unit, then the assist unit will queue the additional processing requests and complete the requests in turn. Accordingly, assist units may help balance the microprocessor's workload and accelerate execution of functions.